package org.jivesoftware.smack.util;

import java.io.FilterInputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Serializable;

public class Base64
{
  public static final int DECODE = 0;
  public static final int DONT_BREAK_LINES = 8;
  public static final int ENCODE = 1;
  private static final byte EQUALS_SIGN = 61;
  private static final byte EQUALS_SIGN_ENC = -1;
  public static final int GZIP = 2;
  private static final int MAX_LINE_LENGTH = 76;
  private static final byte NEW_LINE = 10;
  public static final int NO_OPTIONS = 0;
  public static final int ORDERED = 32;
  private static final String PREFERRED_ENCODING = "UTF-8";
  public static final int URL_SAFE = 16;
  private static final byte WHITE_SPACE_ENC = -5;
  private static final byte[] _ORDERED_ALPHABET;
  private static final byte[] _ORDERED_DECODABET;
  private static final byte[] _STANDARD_ALPHABET;
  private static final byte[] _STANDARD_DECODABET;
  private static final byte[] _URL_SAFE_ALPHABET;
  private static final byte[] _URL_SAFE_DECODABET;

  static
  {
    byte[] arrayOfByte1 = new byte[64];
    arrayOfByte1[0] = 65;
    arrayOfByte1[1] = 66;
    arrayOfByte1[2] = 67;
    arrayOfByte1[3] = 68;
    arrayOfByte1[4] = 69;
    arrayOfByte1[5] = 70;
    arrayOfByte1[6] = 71;
    arrayOfByte1[7] = 72;
    arrayOfByte1[8] = 73;
    arrayOfByte1[9] = 74;
    arrayOfByte1[10] = 75;
    arrayOfByte1[11] = 76;
    arrayOfByte1[12] = 77;
    arrayOfByte1[13] = 78;
    arrayOfByte1[14] = 79;
    arrayOfByte1[15] = 80;
    arrayOfByte1[16] = 81;
    arrayOfByte1[17] = 82;
    arrayOfByte1[18] = 83;
    arrayOfByte1[19] = 84;
    arrayOfByte1[20] = 85;
    arrayOfByte1[21] = 86;
    arrayOfByte1[22] = 87;
    arrayOfByte1[23] = 88;
    arrayOfByte1[24] = 89;
    arrayOfByte1[25] = 90;
    arrayOfByte1[26] = 97;
    arrayOfByte1[27] = 98;
    arrayOfByte1[28] = 99;
    arrayOfByte1[29] = 100;
    arrayOfByte1[30] = 101;
    arrayOfByte1[31] = 102;
    arrayOfByte1[32] = 103;
    arrayOfByte1[33] = 104;
    arrayOfByte1[34] = 105;
    arrayOfByte1[35] = 106;
    arrayOfByte1[36] = 107;
    arrayOfByte1[37] = 108;
    arrayOfByte1[38] = 109;
    arrayOfByte1[39] = 110;
    arrayOfByte1[40] = 111;
    arrayOfByte1[41] = 112;
    arrayOfByte1[42] = 113;
    arrayOfByte1[43] = 114;
    arrayOfByte1[44] = 115;
    arrayOfByte1[45] = 116;
    arrayOfByte1[46] = 117;
    arrayOfByte1[47] = 118;
    arrayOfByte1[48] = 119;
    arrayOfByte1[49] = 120;
    arrayOfByte1[50] = 121;
    arrayOfByte1[51] = 122;
    arrayOfByte1[52] = 48;
    arrayOfByte1[53] = 49;
    arrayOfByte1[54] = 50;
    arrayOfByte1[55] = 51;
    arrayOfByte1[56] = 52;
    arrayOfByte1[57] = 53;
    arrayOfByte1[58] = 54;
    arrayOfByte1[59] = 55;
    arrayOfByte1[60] = 56;
    arrayOfByte1[61] = 57;
    arrayOfByte1[62] = 43;
    arrayOfByte1[63] = 47;
    _STANDARD_ALPHABET = arrayOfByte1;
    byte[] arrayOfByte2 = new byte[127];
    arrayOfByte2[0] = -9;
    arrayOfByte2[1] = -9;
    arrayOfByte2[2] = -9;
    arrayOfByte2[3] = -9;
    arrayOfByte2[4] = -9;
    arrayOfByte2[5] = -9;
    arrayOfByte2[6] = -9;
    arrayOfByte2[7] = -9;
    arrayOfByte2[8] = -9;
    arrayOfByte2[9] = -5;
    arrayOfByte2[10] = -5;
    arrayOfByte2[11] = -9;
    arrayOfByte2[12] = -9;
    arrayOfByte2[13] = -5;
    arrayOfByte2[14] = -9;
    arrayOfByte2[15] = -9;
    arrayOfByte2[16] = -9;
    arrayOfByte2[17] = -9;
    arrayOfByte2[18] = -9;
    arrayOfByte2[19] = -9;
    arrayOfByte2[20] = -9;
    arrayOfByte2[21] = -9;
    arrayOfByte2[22] = -9;
    arrayOfByte2[23] = -9;
    arrayOfByte2[24] = -9;
    arrayOfByte2[25] = -9;
    arrayOfByte2[26] = -9;
    arrayOfByte2[27] = -9;
    arrayOfByte2[28] = -9;
    arrayOfByte2[29] = -9;
    arrayOfByte2[30] = -9;
    arrayOfByte2[31] = -9;
    arrayOfByte2[32] = -5;
    arrayOfByte2[33] = -9;
    arrayOfByte2[34] = -9;
    arrayOfByte2[35] = -9;
    arrayOfByte2[36] = -9;
    arrayOfByte2[37] = -9;
    arrayOfByte2[38] = -9;
    arrayOfByte2[39] = -9;
    arrayOfByte2[40] = -9;
    arrayOfByte2[41] = -9;
    arrayOfByte2[42] = -9;
    arrayOfByte2[43] = 62;
    arrayOfByte2[44] = -9;
    arrayOfByte2[45] = -9;
    arrayOfByte2[46] = -9;
    arrayOfByte2[47] = 63;
    arrayOfByte2[48] = 52;
    arrayOfByte2[49] = 53;
    arrayOfByte2[50] = 54;
    arrayOfByte2[51] = 55;
    arrayOfByte2[52] = 56;
    arrayOfByte2[53] = 57;
    arrayOfByte2[54] = 58;
    arrayOfByte2[55] = 59;
    arrayOfByte2[56] = 60;
    arrayOfByte2[57] = 61;
    arrayOfByte2[58] = -9;
    arrayOfByte2[59] = -9;
    arrayOfByte2[60] = -9;
    arrayOfByte2[61] = -1;
    arrayOfByte2[62] = -9;
    arrayOfByte2[63] = -9;
    arrayOfByte2[64] = -9;
    arrayOfByte2[66] = 1;
    arrayOfByte2[67] = 2;
    arrayOfByte2[68] = 3;
    arrayOfByte2[69] = 4;
    arrayOfByte2[70] = 5;
    arrayOfByte2[71] = 6;
    arrayOfByte2[72] = 7;
    arrayOfByte2[73] = 8;
    arrayOfByte2[74] = 9;
    arrayOfByte2[75] = 10;
    arrayOfByte2[76] = 11;
    arrayOfByte2[77] = 12;
    arrayOfByte2[78] = 13;
    arrayOfByte2[79] = 14;
    arrayOfByte2[80] = 15;
    arrayOfByte2[81] = 16;
    arrayOfByte2[82] = 17;
    arrayOfByte2[83] = 18;
    arrayOfByte2[84] = 19;
    arrayOfByte2[85] = 20;
    arrayOfByte2[86] = 21;
    arrayOfByte2[87] = 22;
    arrayOfByte2[88] = 23;
    arrayOfByte2[89] = 24;
    arrayOfByte2[90] = 25;
    arrayOfByte2[91] = -9;
    arrayOfByte2[92] = -9;
    arrayOfByte2[93] = -9;
    arrayOfByte2[94] = -9;
    arrayOfByte2[95] = -9;
    arrayOfByte2[96] = -9;
    arrayOfByte2[97] = 26;
    arrayOfByte2[98] = 27;
    arrayOfByte2[99] = 28;
    arrayOfByte2[100] = 29;
    arrayOfByte2[101] = 30;
    arrayOfByte2[102] = 31;
    arrayOfByte2[103] = 32;
    arrayOfByte2[104] = 33;
    arrayOfByte2[105] = 34;
    arrayOfByte2[106] = 35;
    arrayOfByte2[107] = 36;
    arrayOfByte2[108] = 37;
    arrayOfByte2[109] = 38;
    arrayOfByte2[110] = 39;
    arrayOfByte2[111] = 40;
    arrayOfByte2[112] = 41;
    arrayOfByte2[113] = 42;
    arrayOfByte2[114] = 43;
    arrayOfByte2[115] = 44;
    arrayOfByte2[116] = 45;
    arrayOfByte2[117] = 46;
    arrayOfByte2[118] = 47;
    arrayOfByte2[119] = 48;
    arrayOfByte2[120] = 49;
    arrayOfByte2[121] = 50;
    arrayOfByte2[122] = 51;
    arrayOfByte2[123] = -9;
    arrayOfByte2[124] = -9;
    arrayOfByte2[125] = -9;
    arrayOfByte2[126] = -9;
    _STANDARD_DECODABET = arrayOfByte2;
    byte[] arrayOfByte3 = new byte[64];
    arrayOfByte3[0] = 65;
    arrayOfByte3[1] = 66;
    arrayOfByte3[2] = 67;
    arrayOfByte3[3] = 68;
    arrayOfByte3[4] = 69;
    arrayOfByte3[5] = 70;
    arrayOfByte3[6] = 71;
    arrayOfByte3[7] = 72;
    arrayOfByte3[8] = 73;
    arrayOfByte3[9] = 74;
    arrayOfByte3[10] = 75;
    arrayOfByte3[11] = 76;
    arrayOfByte3[12] = 77;
    arrayOfByte3[13] = 78;
    arrayOfByte3[14] = 79;
    arrayOfByte3[15] = 80;
    arrayOfByte3[16] = 81;
    arrayOfByte3[17] = 82;
    arrayOfByte3[18] = 83;
    arrayOfByte3[19] = 84;
    arrayOfByte3[20] = 85;
    arrayOfByte3[21] = 86;
    arrayOfByte3[22] = 87;
    arrayOfByte3[23] = 88;
    arrayOfByte3[24] = 89;
    arrayOfByte3[25] = 90;
    arrayOfByte3[26] = 97;
    arrayOfByte3[27] = 98;
    arrayOfByte3[28] = 99;
    arrayOfByte3[29] = 100;
    arrayOfByte3[30] = 101;
    arrayOfByte3[31] = 102;
    arrayOfByte3[32] = 103;
    arrayOfByte3[33] = 104;
    arrayOfByte3[34] = 105;
    arrayOfByte3[35] = 106;
    arrayOfByte3[36] = 107;
    arrayOfByte3[37] = 108;
    arrayOfByte3[38] = 109;
    arrayOfByte3[39] = 110;
    arrayOfByte3[40] = 111;
    arrayOfByte3[41] = 112;
    arrayOfByte3[42] = 113;
    arrayOfByte3[43] = 114;
    arrayOfByte3[44] = 115;
    arrayOfByte3[45] = 116;
    arrayOfByte3[46] = 117;
    arrayOfByte3[47] = 118;
    arrayOfByte3[48] = 119;
    arrayOfByte3[49] = 120;
    arrayOfByte3[50] = 121;
    arrayOfByte3[51] = 122;
    arrayOfByte3[52] = 48;
    arrayOfByte3[53] = 49;
    arrayOfByte3[54] = 50;
    arrayOfByte3[55] = 51;
    arrayOfByte3[56] = 52;
    arrayOfByte3[57] = 53;
    arrayOfByte3[58] = 54;
    arrayOfByte3[59] = 55;
    arrayOfByte3[60] = 56;
    arrayOfByte3[61] = 57;
    arrayOfByte3[62] = 45;
    arrayOfByte3[63] = 95;
    _URL_SAFE_ALPHABET = arrayOfByte3;
    byte[] arrayOfByte4 = new byte[127];
    arrayOfByte4[0] = -9;
    arrayOfByte4[1] = -9;
    arrayOfByte4[2] = -9;
    arrayOfByte4[3] = -9;
    arrayOfByte4[4] = -9;
    arrayOfByte4[5] = -9;
    arrayOfByte4[6] = -9;
    arrayOfByte4[7] = -9;
    arrayOfByte4[8] = -9;
    arrayOfByte4[9] = -5;
    arrayOfByte4[10] = -5;
    arrayOfByte4[11] = -9;
    arrayOfByte4[12] = -9;
    arrayOfByte4[13] = -5;
    arrayOfByte4[14] = -9;
    arrayOfByte4[15] = -9;
    arrayOfByte4[16] = -9;
    arrayOfByte4[17] = -9;
    arrayOfByte4[18] = -9;
    arrayOfByte4[19] = -9;
    arrayOfByte4[20] = -9;
    arrayOfByte4[21] = -9;
    arrayOfByte4[22] = -9;
    arrayOfByte4[23] = -9;
    arrayOfByte4[24] = -9;
    arrayOfByte4[25] = -9;
    arrayOfByte4[26] = -9;
    arrayOfByte4[27] = -9;
    arrayOfByte4[28] = -9;
    arrayOfByte4[29] = -9;
    arrayOfByte4[30] = -9;
    arrayOfByte4[31] = -9;
    arrayOfByte4[32] = -5;
    arrayOfByte4[33] = -9;
    arrayOfByte4[34] = -9;
    arrayOfByte4[35] = -9;
    arrayOfByte4[36] = -9;
    arrayOfByte4[37] = -9;
    arrayOfByte4[38] = -9;
    arrayOfByte4[39] = -9;
    arrayOfByte4[40] = -9;
    arrayOfByte4[41] = -9;
    arrayOfByte4[42] = -9;
    arrayOfByte4[43] = -9;
    arrayOfByte4[44] = -9;
    arrayOfByte4[45] = 62;
    arrayOfByte4[46] = -9;
    arrayOfByte4[47] = -9;
    arrayOfByte4[48] = 52;
    arrayOfByte4[49] = 53;
    arrayOfByte4[50] = 54;
    arrayOfByte4[51] = 55;
    arrayOfByte4[52] = 56;
    arrayOfByte4[53] = 57;
    arrayOfByte4[54] = 58;
    arrayOfByte4[55] = 59;
    arrayOfByte4[56] = 60;
    arrayOfByte4[57] = 61;
    arrayOfByte4[58] = -9;
    arrayOfByte4[59] = -9;
    arrayOfByte4[60] = -9;
    arrayOfByte4[61] = -1;
    arrayOfByte4[62] = -9;
    arrayOfByte4[63] = -9;
    arrayOfByte4[64] = -9;
    arrayOfByte4[66] = 1;
    arrayOfByte4[67] = 2;
    arrayOfByte4[68] = 3;
    arrayOfByte4[69] = 4;
    arrayOfByte4[70] = 5;
    arrayOfByte4[71] = 6;
    arrayOfByte4[72] = 7;
    arrayOfByte4[73] = 8;
    arrayOfByte4[74] = 9;
    arrayOfByte4[75] = 10;
    arrayOfByte4[76] = 11;
    arrayOfByte4[77] = 12;
    arrayOfByte4[78] = 13;
    arrayOfByte4[79] = 14;
    arrayOfByte4[80] = 15;
    arrayOfByte4[81] = 16;
    arrayOfByte4[82] = 17;
    arrayOfByte4[83] = 18;
    arrayOfByte4[84] = 19;
    arrayOfByte4[85] = 20;
    arrayOfByte4[86] = 21;
    arrayOfByte4[87] = 22;
    arrayOfByte4[88] = 23;
    arrayOfByte4[89] = 24;
    arrayOfByte4[90] = 25;
    arrayOfByte4[91] = -9;
    arrayOfByte4[92] = -9;
    arrayOfByte4[93] = -9;
    arrayOfByte4[94] = -9;
    arrayOfByte4[95] = 63;
    arrayOfByte4[96] = -9;
    arrayOfByte4[97] = 26;
    arrayOfByte4[98] = 27;
    arrayOfByte4[99] = 28;
    arrayOfByte4[100] = 29;
    arrayOfByte4[101] = 30;
    arrayOfByte4[102] = 31;
    arrayOfByte4[103] = 32;
    arrayOfByte4[104] = 33;
    arrayOfByte4[105] = 34;
    arrayOfByte4[106] = 35;
    arrayOfByte4[107] = 36;
    arrayOfByte4[108] = 37;
    arrayOfByte4[109] = 38;
    arrayOfByte4[110] = 39;
    arrayOfByte4[111] = 40;
    arrayOfByte4[112] = 41;
    arrayOfByte4[113] = 42;
    arrayOfByte4[114] = 43;
    arrayOfByte4[115] = 44;
    arrayOfByte4[116] = 45;
    arrayOfByte4[117] = 46;
    arrayOfByte4[118] = 47;
    arrayOfByte4[119] = 48;
    arrayOfByte4[120] = 49;
    arrayOfByte4[121] = 50;
    arrayOfByte4[122] = 51;
    arrayOfByte4[123] = -9;
    arrayOfByte4[124] = -9;
    arrayOfByte4[125] = -9;
    arrayOfByte4[126] = -9;
    _URL_SAFE_DECODABET = arrayOfByte4;
    byte[] arrayOfByte5 = new byte[64];
    arrayOfByte5[0] = 45;
    arrayOfByte5[1] = 48;
    arrayOfByte5[2] = 49;
    arrayOfByte5[3] = 50;
    arrayOfByte5[4] = 51;
    arrayOfByte5[5] = 52;
    arrayOfByte5[6] = 53;
    arrayOfByte5[7] = 54;
    arrayOfByte5[8] = 55;
    arrayOfByte5[9] = 56;
    arrayOfByte5[10] = 57;
    arrayOfByte5[11] = 65;
    arrayOfByte5[12] = 66;
    arrayOfByte5[13] = 67;
    arrayOfByte5[14] = 68;
    arrayOfByte5[15] = 69;
    arrayOfByte5[16] = 70;
    arrayOfByte5[17] = 71;
    arrayOfByte5[18] = 72;
    arrayOfByte5[19] = 73;
    arrayOfByte5[20] = 74;
    arrayOfByte5[21] = 75;
    arrayOfByte5[22] = 76;
    arrayOfByte5[23] = 77;
    arrayOfByte5[24] = 78;
    arrayOfByte5[25] = 79;
    arrayOfByte5[26] = 80;
    arrayOfByte5[27] = 81;
    arrayOfByte5[28] = 82;
    arrayOfByte5[29] = 83;
    arrayOfByte5[30] = 84;
    arrayOfByte5[31] = 85;
    arrayOfByte5[32] = 86;
    arrayOfByte5[33] = 87;
    arrayOfByte5[34] = 88;
    arrayOfByte5[35] = 89;
    arrayOfByte5[36] = 90;
    arrayOfByte5[37] = 95;
    arrayOfByte5[38] = 97;
    arrayOfByte5[39] = 98;
    arrayOfByte5[40] = 99;
    arrayOfByte5[41] = 100;
    arrayOfByte5[42] = 101;
    arrayOfByte5[43] = 102;
    arrayOfByte5[44] = 103;
    arrayOfByte5[45] = 104;
    arrayOfByte5[46] = 105;
    arrayOfByte5[47] = 106;
    arrayOfByte5[48] = 107;
    arrayOfByte5[49] = 108;
    arrayOfByte5[50] = 109;
    arrayOfByte5[51] = 110;
    arrayOfByte5[52] = 111;
    arrayOfByte5[53] = 112;
    arrayOfByte5[54] = 113;
    arrayOfByte5[55] = 114;
    arrayOfByte5[56] = 115;
    arrayOfByte5[57] = 116;
    arrayOfByte5[58] = 117;
    arrayOfByte5[59] = 118;
    arrayOfByte5[60] = 119;
    arrayOfByte5[61] = 120;
    arrayOfByte5[62] = 121;
    arrayOfByte5[63] = 122;
    _ORDERED_ALPHABET = arrayOfByte5;
    byte[] arrayOfByte6 = new byte[127];
    arrayOfByte6[0] = -9;
    arrayOfByte6[1] = -9;
    arrayOfByte6[2] = -9;
    arrayOfByte6[3] = -9;
    arrayOfByte6[4] = -9;
    arrayOfByte6[5] = -9;
    arrayOfByte6[6] = -9;
    arrayOfByte6[7] = -9;
    arrayOfByte6[8] = -9;
    arrayOfByte6[9] = -5;
    arrayOfByte6[10] = -5;
    arrayOfByte6[11] = -9;
    arrayOfByte6[12] = -9;
    arrayOfByte6[13] = -5;
    arrayOfByte6[14] = -9;
    arrayOfByte6[15] = -9;
    arrayOfByte6[16] = -9;
    arrayOfByte6[17] = -9;
    arrayOfByte6[18] = -9;
    arrayOfByte6[19] = -9;
    arrayOfByte6[20] = -9;
    arrayOfByte6[21] = -9;
    arrayOfByte6[22] = -9;
    arrayOfByte6[23] = -9;
    arrayOfByte6[24] = -9;
    arrayOfByte6[25] = -9;
    arrayOfByte6[26] = -9;
    arrayOfByte6[27] = -9;
    arrayOfByte6[28] = -9;
    arrayOfByte6[29] = -9;
    arrayOfByte6[30] = -9;
    arrayOfByte6[31] = -9;
    arrayOfByte6[32] = -5;
    arrayOfByte6[33] = -9;
    arrayOfByte6[34] = -9;
    arrayOfByte6[35] = -9;
    arrayOfByte6[36] = -9;
    arrayOfByte6[37] = -9;
    arrayOfByte6[38] = -9;
    arrayOfByte6[39] = -9;
    arrayOfByte6[40] = -9;
    arrayOfByte6[41] = -9;
    arrayOfByte6[42] = -9;
    arrayOfByte6[43] = -9;
    arrayOfByte6[44] = -9;
    arrayOfByte6[46] = -9;
    arrayOfByte6[47] = -9;
    arrayOfByte6[48] = 1;
    arrayOfByte6[49] = 2;
    arrayOfByte6[50] = 3;
    arrayOfByte6[51] = 4;
    arrayOfByte6[52] = 5;
    arrayOfByte6[53] = 6;
    arrayOfByte6[54] = 7;
    arrayOfByte6[55] = 8;
    arrayOfByte6[56] = 9;
    arrayOfByte6[57] = 10;
    arrayOfByte6[58] = -9;
    arrayOfByte6[59] = -9;
    arrayOfByte6[60] = -9;
    arrayOfByte6[61] = -1;
    arrayOfByte6[62] = -9;
    arrayOfByte6[63] = -9;
    arrayOfByte6[64] = -9;
    arrayOfByte6[65] = 11;
    arrayOfByte6[66] = 12;
    arrayOfByte6[67] = 13;
    arrayOfByte6[68] = 14;
    arrayOfByte6[69] = 15;
    arrayOfByte6[70] = 16;
    arrayOfByte6[71] = 17;
    arrayOfByte6[72] = 18;
    arrayOfByte6[73] = 19;
    arrayOfByte6[74] = 20;
    arrayOfByte6[75] = 21;
    arrayOfByte6[76] = 22;
    arrayOfByte6[77] = 23;
    arrayOfByte6[78] = 24;
    arrayOfByte6[79] = 25;
    arrayOfByte6[80] = 26;
    arrayOfByte6[81] = 27;
    arrayOfByte6[82] = 28;
    arrayOfByte6[83] = 29;
    arrayOfByte6[84] = 30;
    arrayOfByte6[85] = 31;
    arrayOfByte6[86] = 32;
    arrayOfByte6[87] = 33;
    arrayOfByte6[88] = 34;
    arrayOfByte6[89] = 35;
    arrayOfByte6[90] = 36;
    arrayOfByte6[91] = -9;
    arrayOfByte6[92] = -9;
    arrayOfByte6[93] = -9;
    arrayOfByte6[94] = -9;
    arrayOfByte6[95] = 37;
    arrayOfByte6[96] = -9;
    arrayOfByte6[97] = 38;
    arrayOfByte6[98] = 39;
    arrayOfByte6[99] = 40;
    arrayOfByte6[100] = 41;
    arrayOfByte6[101] = 42;
    arrayOfByte6[102] = 43;
    arrayOfByte6[103] = 44;
    arrayOfByte6[104] = 45;
    arrayOfByte6[105] = 46;
    arrayOfByte6[106] = 47;
    arrayOfByte6[107] = 48;
    arrayOfByte6[108] = 49;
    arrayOfByte6[109] = 50;
    arrayOfByte6[110] = 51;
    arrayOfByte6[111] = 52;
    arrayOfByte6[112] = 53;
    arrayOfByte6[113] = 54;
    arrayOfByte6[114] = 55;
    arrayOfByte6[115] = 56;
    arrayOfByte6[116] = 57;
    arrayOfByte6[117] = 58;
    arrayOfByte6[118] = 59;
    arrayOfByte6[119] = 60;
    arrayOfByte6[120] = 61;
    arrayOfByte6[121] = 62;
    arrayOfByte6[122] = 63;
    arrayOfByte6[123] = -9;
    arrayOfByte6[124] = -9;
    arrayOfByte6[125] = -9;
    arrayOfByte6[126] = -9;
    _ORDERED_DECODABET = arrayOfByte6;
  }

  public static byte[] decode(String paramString)
  {
    return decode(paramString, 0);
  }

  // ERROR //
  public static byte[] decode(String paramString, int paramInt)
  {
    // Byte code:
    //   0: aload_0
    //   1: ldc 35
    //   3: invokevirtual 167	java/lang/String:getBytes	(Ljava/lang/String;)[B
    //   6: astore 28
    //   8: aload 28
    //   10: astore_3
    //   11: aload_3
    //   12: iconst_0
    //   13: aload_3
    //   14: arraylength
    //   15: iload_1
    //   16: invokestatic 170	org/jivesoftware/smack/util/Base64:decode	([BIII)[B
    //   19: astore 4
    //   21: aload 4
    //   23: ifnull +121 -> 144
    //   26: aload 4
    //   28: arraylength
    //   29: iconst_4
    //   30: if_icmplt +114 -> 144
    //   33: ldc 171
    //   35: sipush 255
    //   38: aload 4
    //   40: iconst_0
    //   41: baload
    //   42: iand
    //   43: ldc 172
    //   45: aload 4
    //   47: iconst_1
    //   48: baload
    //   49: bipush 8
    //   51: ishl
    //   52: iand
    //   53: ior
    //   54: if_icmpne +90 -> 144
    //   57: aconst_null
    //   58: astore 5
    //   60: aconst_null
    //   61: astore 6
    //   63: aconst_null
    //   64: astore 7
    //   66: sipush 2048
    //   69: newarray byte
    //   71: astore 8
    //   73: new 174	java/io/ByteArrayOutputStream
    //   76: dup
    //   77: invokespecial 175	java/io/ByteArrayOutputStream:<init>	()V
    //   80: astore 9
    //   82: new 177	java/io/ByteArrayInputStream
    //   85: dup
    //   86: aload 4
    //   88: invokespecial 180	java/io/ByteArrayInputStream:<init>	([B)V
    //   91: astore 10
    //   93: new 182	java/util/zip/GZIPInputStream
    //   96: dup
    //   97: aload 10
    //   99: invokespecial 185	java/util/zip/GZIPInputStream:<init>	(Ljava/io/InputStream;)V
    //   102: astore 11
    //   104: aload 11
    //   106: aload 8
    //   108: invokevirtual 189	java/util/zip/GZIPInputStream:read	([B)I
    //   111: istore 20
    //   113: iload 20
    //   115: ifge +41 -> 156
    //   118: aload 9
    //   120: invokevirtual 193	java/io/ByteArrayOutputStream:toByteArray	()[B
    //   123: astore 21
    //   125: aload 21
    //   127: astore 4
    //   129: aload 9
    //   131: invokevirtual 196	java/io/ByteArrayOutputStream:close	()V
    //   134: aload 11
    //   136: invokevirtual 197	java/util/zip/GZIPInputStream:close	()V
    //   139: aload 10
    //   141: invokevirtual 198	java/io/ByteArrayInputStream:close	()V
    //   144: aload 4
    //   146: areturn
    //   147: astore_2
    //   148: aload_0
    //   149: invokevirtual 200	java/lang/String:getBytes	()[B
    //   152: astore_3
    //   153: goto -142 -> 11
    //   156: aload 9
    //   158: aload 8
    //   160: iconst_0
    //   161: iload 20
    //   163: invokevirtual 204	java/io/ByteArrayOutputStream:write	([BII)V
    //   166: goto -62 -> 104
    //   169: astore 16
    //   171: aload 9
    //   173: astore 7
    //   175: aload 11
    //   177: astore 6
    //   179: aload 10
    //   181: astore 5
    //   183: aload 7
    //   185: invokevirtual 196	java/io/ByteArrayOutputStream:close	()V
    //   188: aload 6
    //   190: invokevirtual 197	java/util/zip/GZIPInputStream:close	()V
    //   193: aload 5
    //   195: invokevirtual 198	java/io/ByteArrayInputStream:close	()V
    //   198: goto -54 -> 144
    //   201: astore 19
    //   203: goto -59 -> 144
    //   206: astore 12
    //   208: aload 7
    //   210: invokevirtual 196	java/io/ByteArrayOutputStream:close	()V
    //   213: aload 6
    //   215: invokevirtual 197	java/util/zip/GZIPInputStream:close	()V
    //   218: aload 5
    //   220: invokevirtual 198	java/io/ByteArrayInputStream:close	()V
    //   223: aload 12
    //   225: athrow
    //   226: astore 17
    //   228: goto -40 -> 188
    //   231: astore 18
    //   233: goto -40 -> 193
    //   236: astore 13
    //   238: goto -25 -> 213
    //   241: astore 14
    //   243: goto -25 -> 218
    //   246: astore 15
    //   248: goto -25 -> 223
    //   251: astore 22
    //   253: goto -119 -> 134
    //   256: astore 23
    //   258: goto -119 -> 139
    //   261: astore 24
    //   263: goto -119 -> 144
    //   266: astore 12
    //   268: aload 9
    //   270: astore 7
    //   272: goto -64 -> 208
    //   275: astore 12
    //   277: aload 9
    //   279: astore 7
    //   281: aload 10
    //   283: astore 5
    //   285: goto -77 -> 208
    //   288: astore 12
    //   290: aload 9
    //   292: astore 7
    //   294: aload 11
    //   296: astore 6
    //   298: aload 10
    //   300: astore 5
    //   302: goto -94 -> 208
    //   305: astore 27
    //   307: goto -124 -> 183
    //   310: astore 26
    //   312: aload 9
    //   314: astore 7
    //   316: goto -133 -> 183
    //   319: astore 25
    //   321: aload 9
    //   323: astore 7
    //   325: aload 10
    //   327: astore 5
    //   329: goto -146 -> 183
    //
    // Exception table:
    //   from	to	target	type
    //   0	8	147	java/io/UnsupportedEncodingException
    //   104	125	169	java/io/IOException
    //   156	166	169	java/io/IOException
    //   193	198	201	java/lang/Exception
    //   73	82	206	finally
    //   183	188	226	java/lang/Exception
    //   188	193	231	java/lang/Exception
    //   208	213	236	java/lang/Exception
    //   213	218	241	java/lang/Exception
    //   218	223	246	java/lang/Exception
    //   129	134	251	java/lang/Exception
    //   134	139	256	java/lang/Exception
    //   139	144	261	java/lang/Exception
    //   82	93	266	finally
    //   93	104	275	finally
    //   104	125	288	finally
    //   156	166	288	finally
    //   73	82	305	java/io/IOException
    //   82	93	310	java/io/IOException
    //   93	104	319	java/io/IOException
  }

  public static byte[] decode(byte[] paramArrayOfByte, int paramInt1, int paramInt2, int paramInt3)
  {
    int i2;
    int i3;
    byte[] arrayOfByte4;
    int i4;
    int i5;
    int i6;
    int i7;
    int i8;
    byte[] arrayOfByte1 = getDecodabet(paramInt3);
    byte[] arrayOfByte2 = new byte[paramInt2 * 3 / 4];
    byte[] arrayOfByte3 = new byte[4];
    int i = 0;
    int j = 0;
    int k = paramInt1;
    int l = 0;
    int i1 = 0;
    if (k >= paramInt1 + paramInt2)
    {
      i6 = i;
      i7 = i1;
      i8 = j;
      byte[] arrayOfByte5 = new byte[i8];
      System.arraycopy(arrayOfByte2, 0, arrayOfByte5, 0, i8);
      arrayOfByte4 = arrayOfByte5;
    }
    while (true)
    {
      while (true)
      {
        return arrayOfByte4;
        i2 = (byte)(0x7F & paramArrayOfByte[k]);
        i3 = arrayOfByte1[i2];
        if (i3 < -5)
          break;
        if (i3 < -1)
          break label256;
        i4 = l + 1;
        arrayOfByte3[l] = i2;
        if (i4 <= 3)
          break label238;
        i5 = j + decode4to3(arrayOfByte3, 0, arrayOfByte2, j, paramInt3);
        i4 = 0;
        if (i2 != 61)
          break label234;
        i6 = i3;
        i7 = i2;
        i8 = i5;
      }
      System.err.println("Bad Base64 input character at " + k + ": " + paramArrayOfByte[k] + "(decimal)");
      arrayOfByte4 = null;
    }
    label234: j = i5;
    while (true)
    {
      while (true)
      {
        label238: ++k;
        l = i4;
        i1 = i2;
        i = i3;
      }
      label256: i4 = l;
    }
  }

  private static int decode4to3(byte[] paramArrayOfByte1, int paramInt1, byte[] paramArrayOfByte2, int paramInt2, int paramInt3)
  {
    int i;
    byte[] arrayOfByte = getDecodabet(paramInt3);
    if (paramArrayOfByte1[(paramInt1 + 2)] == 61)
    {
      paramArrayOfByte2[paramInt2] = (byte)(((0xFF & arrayOfByte[paramArrayOfByte1[paramInt1]]) << 18 | (0xFF & arrayOfByte[paramArrayOfByte1[(paramInt1 + 1)]]) << 12) >>> 16);
      i = 1;
    }
    while (true)
    {
      return i;
      if (paramArrayOfByte1[(paramInt1 + 3)] != 61)
        break;
      int k = (0xFF & arrayOfByte[paramArrayOfByte1[paramInt1]]) << 18 | (0xFF & arrayOfByte[paramArrayOfByte1[(paramInt1 + 1)]]) << 12 | (0xFF & arrayOfByte[paramArrayOfByte1[(paramInt1 + 2)]]) << 6;
      paramArrayOfByte2[paramInt2] = (byte)(k >>> 16);
      paramArrayOfByte2[(paramInt2 + 1)] = (byte)(k >>> 8);
      i = 2;
    }
    try
    {
      int j = (0xFF & arrayOfByte[paramArrayOfByte1[paramInt1]]) << 18 | (0xFF & arrayOfByte[paramArrayOfByte1[(paramInt1 + 1)]]) << 12 | (0xFF & arrayOfByte[paramArrayOfByte1[(paramInt1 + 2)]]) << 6 | 0xFF & arrayOfByte[paramArrayOfByte1[(paramInt1 + 3)]];
      paramArrayOfByte2[paramInt2] = (byte)(j >> 16);
      paramArrayOfByte2[(paramInt2 + 1)] = (byte)(j >> 8);
      paramArrayOfByte2[(paramInt2 + 2)] = (byte)j;
      i = 3;
    }
    catch (Exception localException)
    {
      System.out.println(paramArrayOfByte1[paramInt1] + ": " + arrayOfByte[paramArrayOfByte1[paramInt1]]);
      System.out.println(paramArrayOfByte1[(paramInt1 + 1)] + ": " + arrayOfByte[paramArrayOfByte1[(paramInt1 + 1)]]);
      System.out.println(paramArrayOfByte1[(paramInt1 + 2)] + ": " + arrayOfByte[paramArrayOfByte1[(paramInt1 + 2)]]);
      System.out.println(paramArrayOfByte1[(paramInt1 + 3)] + ": " + arrayOfByte[paramArrayOfByte1[(paramInt1 + 3)]]);
      i = -1;
    }
  }

  // ERROR //
  public static void decodeFileToFile(String paramString1, String paramString2)
  {
    // Byte code:
    //   0: aload_0
    //   1: invokestatic 250	org/jivesoftware/smack/util/Base64:decodeFromFile	(Ljava/lang/String;)[B
    //   4: astore_2
    //   5: aconst_null
    //   6: astore_3
    //   7: new 252	java/io/BufferedOutputStream
    //   10: dup
    //   11: new 254	java/io/FileOutputStream
    //   14: dup
    //   15: aload_1
    //   16: invokespecial 255	java/io/FileOutputStream:<init>	(Ljava/lang/String;)V
    //   19: invokespecial 258	java/io/BufferedOutputStream:<init>	(Ljava/io/OutputStream;)V
    //   22: astore 4
    //   24: aload 4
    //   26: aload_2
    //   27: invokevirtual 262	java/io/OutputStream:write	([B)V
    //   30: aload 4
    //   32: invokevirtual 263	java/io/OutputStream:close	()V
    //   35: return
    //   36: astore 11
    //   38: aload 11
    //   40: astore 6
    //   42: aload 6
    //   44: invokevirtual 266	java/io/IOException:printStackTrace	()V
    //   47: aload_3
    //   48: invokevirtual 263	java/io/OutputStream:close	()V
    //   51: goto -16 -> 35
    //   54: astore 9
    //   56: goto -21 -> 35
    //   59: astore 7
    //   61: aload_3
    //   62: invokevirtual 263	java/io/OutputStream:close	()V
    //   65: aload 7
    //   67: athrow
    //   68: astore 10
    //   70: goto -35 -> 35
    //   73: astore 8
    //   75: goto -10 -> 65
    //   78: astore 7
    //   80: aload 4
    //   82: astore_3
    //   83: goto -22 -> 61
    //   86: astore 5
    //   88: aload 5
    //   90: astore 6
    //   92: aload 4
    //   94: astore_3
    //   95: goto -53 -> 42
    //
    // Exception table:
    //   from	to	target	type
    //   7	24	36	java/io/IOException
    //   47	51	54	java/lang/Exception
    //   7	24	59	finally
    //   42	47	59	finally
    //   30	35	68	java/lang/Exception
    //   61	65	73	java/lang/Exception
    //   24	30	78	finally
    //   24	30	86	java/io/IOException
  }

  // ERROR //
  public static byte[] decodeFromFile(String paramString)
  {
    // Byte code:
    //   0: aconst_null
    //   1: astore_1
    //   2: aconst_null
    //   3: checkcast 267	[B
    //   6: astore_2
    //   7: aconst_null
    //   8: astore_3
    //   9: new 269	java/io/File
    //   12: dup
    //   13: aload_0
    //   14: invokespecial 270	java/io/File:<init>	(Ljava/lang/String;)V
    //   17: astore 4
    //   19: aconst_null
    //   20: checkcast 267	[B
    //   23: pop
    //   24: iconst_0
    //   25: istore 10
    //   27: aload 4
    //   29: invokevirtual 274	java/io/File:length	()J
    //   32: ldc2_w 275
    //   35: lcmp
    //   36: ifle +42 -> 78
    //   39: getstatic 214	java/lang/System:err	Ljava/io/PrintStream;
    //   42: new 216	java/lang/StringBuilder
    //   45: dup
    //   46: ldc_w 278
    //   49: invokespecial 221	java/lang/StringBuilder:<init>	(Ljava/lang/String;)V
    //   52: aload 4
    //   54: invokevirtual 274	java/io/File:length	()J
    //   57: invokevirtual 281	java/lang/StringBuilder:append	(J)Ljava/lang/StringBuilder;
    //   60: ldc_w 283
    //   63: invokevirtual 230	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   66: invokevirtual 236	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   69: invokevirtual 241	java/io/PrintStream:println	(Ljava/lang/String;)V
    //   72: aconst_null
    //   73: invokevirtual 284	org/jivesoftware/smack/util/Base64$InputStream:close	()V
    //   76: aload_1
    //   77: areturn
    //   78: aload 4
    //   80: invokevirtual 274	java/io/File:length	()J
    //   83: l2i
    //   84: newarray byte
    //   86: astore 11
    //   88: new 6	org/jivesoftware/smack/util/Base64$InputStream
    //   91: dup
    //   92: new 286	java/io/BufferedInputStream
    //   95: dup
    //   96: new 288	java/io/FileInputStream
    //   99: dup
    //   100: aload 4
    //   102: invokespecial 291	java/io/FileInputStream:<init>	(Ljava/io/File;)V
    //   105: invokespecial 292	java/io/BufferedInputStream:<init>	(Ljava/io/InputStream;)V
    //   108: iconst_0
    //   109: invokespecial 295	org/jivesoftware/smack/util/Base64$InputStream:<init>	(Ljava/io/InputStream;I)V
    //   112: astore 12
    //   114: aload 12
    //   116: aload 11
    //   118: iload 10
    //   120: sipush 4096
    //   123: invokevirtual 298	org/jivesoftware/smack/util/Base64$InputStream:read	([BII)I
    //   126: istore 14
    //   128: iload 14
    //   130: ifge +28 -> 158
    //   133: iload 10
    //   135: newarray byte
    //   137: astore_2
    //   138: aload 11
    //   140: iconst_0
    //   141: aload_2
    //   142: iconst_0
    //   143: iload 10
    //   145: invokestatic 210	java/lang/System:arraycopy	(Ljava/lang/Object;ILjava/lang/Object;II)V
    //   148: aload 12
    //   150: invokevirtual 284	org/jivesoftware/smack/util/Base64$InputStream:close	()V
    //   153: aload_2
    //   154: astore_1
    //   155: goto -79 -> 76
    //   158: iload 10
    //   160: iload 14
    //   162: iadd
    //   163: istore 10
    //   165: goto -51 -> 114
    //   168: astore 7
    //   170: getstatic 214	java/lang/System:err	Ljava/io/PrintStream;
    //   173: new 216	java/lang/StringBuilder
    //   176: dup
    //   177: ldc_w 300
    //   180: invokespecial 221	java/lang/StringBuilder:<init>	(Ljava/lang/String;)V
    //   183: aload_0
    //   184: invokevirtual 230	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   187: invokevirtual 236	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   190: invokevirtual 241	java/io/PrintStream:println	(Ljava/lang/String;)V
    //   193: aload_3
    //   194: invokevirtual 284	org/jivesoftware/smack/util/Base64$InputStream:close	()V
    //   197: goto -44 -> 153
    //   200: astore 8
    //   202: goto -49 -> 153
    //   205: astore 5
    //   207: aload_3
    //   208: invokevirtual 284	org/jivesoftware/smack/util/Base64$InputStream:close	()V
    //   211: aload 5
    //   213: athrow
    //   214: astore 15
    //   216: goto -63 -> 153
    //   219: astore 16
    //   221: goto -145 -> 76
    //   224: astore 6
    //   226: goto -15 -> 211
    //   229: astore 5
    //   231: aload 12
    //   233: astore_3
    //   234: goto -27 -> 207
    //   237: astore 13
    //   239: aload 12
    //   241: astore_3
    //   242: goto -72 -> 170
    //
    // Exception table:
    //   from	to	target	type
    //   9	72	168	java/io/IOException
    //   78	114	168	java/io/IOException
    //   193	197	200	java/lang/Exception
    //   9	72	205	finally
    //   78	114	205	finally
    //   170	193	205	finally
    //   148	153	214	java/lang/Exception
    //   72	76	219	java/lang/Exception
    //   207	211	224	java/lang/Exception
    //   114	148	229	finally
    //   114	148	237	java/io/IOException
  }

  // ERROR //
  public static boolean decodeToFile(String paramString1, String paramString2)
  {
    // Byte code:
    //   0: aconst_null
    //   1: astore_2
    //   2: new 9	org/jivesoftware/smack/util/Base64$OutputStream
    //   5: dup
    //   6: new 254	java/io/FileOutputStream
    //   9: dup
    //   10: aload_1
    //   11: invokespecial 255	java/io/FileOutputStream:<init>	(Ljava/lang/String;)V
    //   14: iconst_0
    //   15: invokespecial 305	org/jivesoftware/smack/util/Base64$OutputStream:<init>	(Ljava/io/OutputStream;I)V
    //   18: astore_3
    //   19: aload_3
    //   20: aload_0
    //   21: ldc 35
    //   23: invokevirtual 167	java/lang/String:getBytes	(Ljava/lang/String;)[B
    //   26: invokevirtual 306	org/jivesoftware/smack/util/Base64$OutputStream:write	([B)V
    //   29: iconst_1
    //   30: istore 5
    //   32: aload_3
    //   33: invokevirtual 307	org/jivesoftware/smack/util/Base64$OutputStream:close	()V
    //   36: iload 5
    //   38: ireturn
    //   39: astore 10
    //   41: iconst_0
    //   42: istore 5
    //   44: aload_2
    //   45: invokevirtual 307	org/jivesoftware/smack/util/Base64$OutputStream:close	()V
    //   48: goto -12 -> 36
    //   51: astore 6
    //   53: goto -17 -> 36
    //   56: astore 7
    //   58: aload_2
    //   59: invokevirtual 307	org/jivesoftware/smack/util/Base64$OutputStream:close	()V
    //   62: aload 7
    //   64: athrow
    //   65: astore 9
    //   67: goto -31 -> 36
    //   70: astore 8
    //   72: goto -10 -> 62
    //   75: astore 7
    //   77: aload_3
    //   78: astore_2
    //   79: goto -21 -> 58
    //   82: astore 4
    //   84: aload_3
    //   85: astore_2
    //   86: goto -45 -> 41
    //
    // Exception table:
    //   from	to	target	type
    //   2	19	39	java/io/IOException
    //   44	48	51	java/lang/Exception
    //   2	19	56	finally
    //   32	36	65	java/lang/Exception
    //   58	62	70	java/lang/Exception
    //   19	29	75	finally
    //   19	29	82	java/io/IOException
  }

  // ERROR //
  public static Object decodeToObject(String paramString)
  {
    // Byte code:
    //   0: aload_0
    //   1: invokestatic 313	org/jivesoftware/smack/util/Base64:decode	(Ljava/lang/String;)[B
    //   4: astore_1
    //   5: aconst_null
    //   6: astore_2
    //   7: aconst_null
    //   8: astore_3
    //   9: new 177	java/io/ByteArrayInputStream
    //   12: dup
    //   13: aload_1
    //   14: invokespecial 180	java/io/ByteArrayInputStream:<init>	([B)V
    //   17: astore 4
    //   19: new 315	java/io/ObjectInputStream
    //   22: dup
    //   23: aload 4
    //   25: invokespecial 316	java/io/ObjectInputStream:<init>	(Ljava/io/InputStream;)V
    //   28: astore 5
    //   30: aload 5
    //   32: invokevirtual 320	java/io/ObjectInputStream:readObject	()Ljava/lang/Object;
    //   35: astore 18
    //   37: aload 18
    //   39: astore 11
    //   41: aload 4
    //   43: invokevirtual 198	java/io/ByteArrayInputStream:close	()V
    //   46: aload 5
    //   48: invokevirtual 321	java/io/ObjectInputStream:close	()V
    //   51: aload 11
    //   53: areturn
    //   54: astore 24
    //   56: aload 24
    //   58: astore 7
    //   60: aload 7
    //   62: invokevirtual 266	java/io/IOException:printStackTrace	()V
    //   65: aconst_null
    //   66: astore 11
    //   68: aload_2
    //   69: invokevirtual 198	java/io/ByteArrayInputStream:close	()V
    //   72: aload_3
    //   73: invokevirtual 321	java/io/ObjectInputStream:close	()V
    //   76: goto -25 -> 51
    //   79: astore 13
    //   81: goto -30 -> 51
    //   84: astore 23
    //   86: aload 23
    //   88: astore 15
    //   90: aload 15
    //   92: invokevirtual 322	java/lang/ClassNotFoundException:printStackTrace	()V
    //   95: aconst_null
    //   96: astore 11
    //   98: aload_2
    //   99: invokevirtual 198	java/io/ByteArrayInputStream:close	()V
    //   102: aload_3
    //   103: invokevirtual 321	java/io/ObjectInputStream:close	()V
    //   106: goto -55 -> 51
    //   109: astore 17
    //   111: goto -60 -> 51
    //   114: astore 8
    //   116: aload_2
    //   117: invokevirtual 198	java/io/ByteArrayInputStream:close	()V
    //   120: aload_3
    //   121: invokevirtual 321	java/io/ObjectInputStream:close	()V
    //   124: aload 8
    //   126: athrow
    //   127: astore 20
    //   129: goto -78 -> 51
    //   132: astore 12
    //   134: goto -62 -> 72
    //   137: astore 16
    //   139: goto -37 -> 102
    //   142: astore 9
    //   144: goto -24 -> 120
    //   147: astore 10
    //   149: goto -25 -> 124
    //   152: astore 19
    //   154: goto -108 -> 46
    //   157: astore 8
    //   159: aload 4
    //   161: astore_2
    //   162: goto -46 -> 116
    //   165: astore 8
    //   167: aload 5
    //   169: astore_3
    //   170: aload 4
    //   172: astore_2
    //   173: goto -57 -> 116
    //   176: astore 22
    //   178: aload 22
    //   180: astore 15
    //   182: aload 4
    //   184: astore_2
    //   185: goto -95 -> 90
    //   188: astore 14
    //   190: aload 14
    //   192: astore 15
    //   194: aload 5
    //   196: astore_3
    //   197: aload 4
    //   199: astore_2
    //   200: goto -110 -> 90
    //   203: astore 21
    //   205: aload 21
    //   207: astore 7
    //   209: aload 4
    //   211: astore_2
    //   212: goto -152 -> 60
    //   215: astore 6
    //   217: aload 6
    //   219: astore 7
    //   221: aload 5
    //   223: astore_3
    //   224: aload 4
    //   226: astore_2
    //   227: goto -167 -> 60
    //
    // Exception table:
    //   from	to	target	type
    //   9	19	54	java/io/IOException
    //   72	76	79	java/lang/Exception
    //   9	19	84	java/lang/ClassNotFoundException
    //   102	106	109	java/lang/Exception
    //   9	19	114	finally
    //   60	65	114	finally
    //   90	95	114	finally
    //   46	51	127	java/lang/Exception
    //   68	72	132	java/lang/Exception
    //   98	102	137	java/lang/Exception
    //   116	120	142	java/lang/Exception
    //   120	124	147	java/lang/Exception
    //   41	46	152	java/lang/Exception
    //   19	30	157	finally
    //   30	37	165	finally
    //   19	30	176	java/lang/ClassNotFoundException
    //   30	37	188	java/lang/ClassNotFoundException
    //   19	30	203	java/io/IOException
    //   30	37	215	java/io/IOException
  }

  private static byte[] encode3to4(byte[] paramArrayOfByte1, int paramInt1, int paramInt2, byte[] paramArrayOfByte2, int paramInt3, int paramInt4)
  {
    int i;
    int j;
    int l;
    int i1;
    byte[] arrayOfByte = getAlphabet(paramInt4);
    if (paramInt2 > 0)
    {
      i = paramArrayOfByte1[paramInt1] << 24 >>> 8;
      if (paramInt2 <= 1)
        break label108;
      j = paramArrayOfByte1[(paramInt1 + 1)] << 24 >>> 16;
      int k = i | j;
      if (paramInt2 <= 2)
        break label114;
      l = paramArrayOfByte1[(paramInt1 + 2)] << 24 >>> 24;
      i1 = k | l;
      switch (paramInt2)
      {
      default:
      case 3:
      case 2:
      case 1:
      }
    }
    while (true)
    {
      while (true)
      {
        while (true)
        {
          while (true)
          {
            while (true)
            {
              while (true)
              {
                return paramArrayOfByte2;
                i = 0;
              }
              label108: j = 0;
            }
            label114: l = 0;
          }
          paramArrayOfByte2[paramInt3] = arrayOfByte[(i1 >>> 18)];
          paramArrayOfByte2[(paramInt3 + 1)] = arrayOfByte[(0x3F & i1 >>> 12)];
          paramArrayOfByte2[(paramInt3 + 2)] = arrayOfByte[(0x3F & i1 >>> 6)];
          paramArrayOfByte2[(paramInt3 + 3)] = arrayOfByte[(i1 & 0x3F)];
        }
        paramArrayOfByte2[paramInt3] = arrayOfByte[(i1 >>> 18)];
        paramArrayOfByte2[(paramInt3 + 1)] = arrayOfByte[(0x3F & i1 >>> 12)];
        paramArrayOfByte2[(paramInt3 + 2)] = arrayOfByte[(0x3F & i1 >>> 6)];
        paramArrayOfByte2[(paramInt3 + 3)] = 61;
      }
      paramArrayOfByte2[paramInt3] = arrayOfByte[(i1 >>> 18)];
      paramArrayOfByte2[(paramInt3 + 1)] = arrayOfByte[(0x3F & i1 >>> 12)];
      paramArrayOfByte2[(paramInt3 + 2)] = 61;
      paramArrayOfByte2[(paramInt3 + 3)] = 61;
    }
  }

  private static byte[] encode3to4(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2, int paramInt1, int paramInt2)
  {
    encode3to4(paramArrayOfByte2, 0, paramInt1, paramArrayOfByte1, 0, paramInt2);
    return paramArrayOfByte1;
  }

  public static String encodeBytes(byte[] paramArrayOfByte)
  {
    return encodeBytes(paramArrayOfByte, 0, paramArrayOfByte.length, 0);
  }

  public static String encodeBytes(byte[] paramArrayOfByte, int paramInt)
  {
    return encodeBytes(paramArrayOfByte, 0, paramArrayOfByte.length, paramInt);
  }

  public static String encodeBytes(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
  {
    return encodeBytes(paramArrayOfByte, paramInt1, paramInt2, 0);
  }

  // ERROR //
  public static String encodeBytes(byte[] paramArrayOfByte, int paramInt1, int paramInt2, int paramInt3)
  {
    // Byte code:
    //   0: iload_3
    //   1: bipush 8
    //   3: iand
    //   4: istore 4
    //   6: iload_3
    //   7: iconst_2
    //   8: iand
    //   9: iconst_2
    //   10: if_icmpne +177 -> 187
    //   13: new 174	java/io/ByteArrayOutputStream
    //   16: dup
    //   17: invokespecial 175	java/io/ByteArrayOutputStream:<init>	()V
    //   20: astore 22
    //   22: new 9	org/jivesoftware/smack/util/Base64$OutputStream
    //   25: dup
    //   26: aload 22
    //   28: iload_3
    //   29: iconst_1
    //   30: ior
    //   31: invokespecial 305	org/jivesoftware/smack/util/Base64$OutputStream:<init>	(Ljava/io/OutputStream;I)V
    //   34: astore 23
    //   36: new 331	java/util/zip/GZIPOutputStream
    //   39: dup
    //   40: aload 23
    //   42: invokespecial 332	java/util/zip/GZIPOutputStream:<init>	(Ljava/io/OutputStream;)V
    //   45: astore 24
    //   47: aload 24
    //   49: aload_0
    //   50: iload_1
    //   51: iload_2
    //   52: invokevirtual 333	java/util/zip/GZIPOutputStream:write	([BII)V
    //   55: aload 24
    //   57: invokevirtual 334	java/util/zip/GZIPOutputStream:close	()V
    //   60: aload 24
    //   62: invokevirtual 334	java/util/zip/GZIPOutputStream:close	()V
    //   65: aload 23
    //   67: invokevirtual 307	org/jivesoftware/smack/util/Base64$OutputStream:close	()V
    //   70: aload 22
    //   72: invokevirtual 196	java/io/ByteArrayOutputStream:close	()V
    //   75: new 164	java/lang/String
    //   78: dup
    //   79: aload 22
    //   81: invokevirtual 193	java/io/ByteArrayOutputStream:toByteArray	()[B
    //   84: ldc 35
    //   86: invokespecial 337	java/lang/String:<init>	([BLjava/lang/String;)V
    //   89: astore 19
    //   91: aload 19
    //   93: areturn
    //   94: astore 47
    //   96: aload 47
    //   98: astore 26
    //   100: aconst_null
    //   101: astore 27
    //   103: aconst_null
    //   104: astore 28
    //   106: aconst_null
    //   107: astore 29
    //   109: aload 26
    //   111: invokevirtual 266	java/io/IOException:printStackTrace	()V
    //   114: aload 27
    //   116: invokevirtual 334	java/util/zip/GZIPOutputStream:close	()V
    //   119: aload 29
    //   121: invokevirtual 307	org/jivesoftware/smack/util/Base64$OutputStream:close	()V
    //   124: aload 28
    //   126: invokevirtual 196	java/io/ByteArrayOutputStream:close	()V
    //   129: aconst_null
    //   130: astore 19
    //   132: goto -41 -> 91
    //   135: astore 46
    //   137: aload 46
    //   139: astore 30
    //   141: aconst_null
    //   142: astore 27
    //   144: aconst_null
    //   145: astore 28
    //   147: aconst_null
    //   148: astore 29
    //   150: aload 27
    //   152: invokevirtual 334	java/util/zip/GZIPOutputStream:close	()V
    //   155: aload 29
    //   157: invokevirtual 307	org/jivesoftware/smack/util/Base64$OutputStream:close	()V
    //   160: aload 28
    //   162: invokevirtual 196	java/io/ByteArrayOutputStream:close	()V
    //   165: aload 30
    //   167: athrow
    //   168: astore 41
    //   170: new 164	java/lang/String
    //   173: dup
    //   174: aload 22
    //   176: invokevirtual 193	java/io/ByteArrayOutputStream:toByteArray	()[B
    //   179: invokespecial 338	java/lang/String:<init>	([B)V
    //   182: astore 19
    //   184: goto -93 -> 91
    //   187: iload 4
    //   189: ifne +136 -> 325
    //   192: iconst_1
    //   193: istore 5
    //   195: iload_2
    //   196: iconst_4
    //   197: imul
    //   198: iconst_3
    //   199: idiv
    //   200: istore 6
    //   202: iload_2
    //   203: iconst_3
    //   204: irem
    //   205: ifle +126 -> 331
    //   208: iconst_4
    //   209: istore 7
    //   211: iload 7
    //   213: iload 6
    //   215: iadd
    //   216: istore 8
    //   218: iload 5
    //   220: ifeq +117 -> 337
    //   223: iload 6
    //   225: bipush 76
    //   227: idiv
    //   228: istore 9
    //   230: iload 9
    //   232: iload 8
    //   234: iadd
    //   235: newarray byte
    //   237: astore 10
    //   239: iconst_0
    //   240: istore 11
    //   242: iload_2
    //   243: iconst_2
    //   244: isub
    //   245: istore 12
    //   247: iconst_0
    //   248: istore 13
    //   250: iconst_0
    //   251: istore 14
    //   253: iload 14
    //   255: iload 12
    //   257: if_icmplt +86 -> 343
    //   260: iload 14
    //   262: iload_2
    //   263: if_icmpge +24 -> 287
    //   266: aload_0
    //   267: iload 14
    //   269: iload_1
    //   270: iadd
    //   271: iload_2
    //   272: iload 14
    //   274: isub
    //   275: aload 10
    //   277: iload 11
    //   279: iload_3
    //   280: invokestatic 142	org/jivesoftware/smack/util/Base64:encode3to4	([BII[BII)[B
    //   283: pop
    //   284: iinc 11 4
    //   287: new 164	java/lang/String
    //   290: dup
    //   291: aload 10
    //   293: iconst_0
    //   294: iload 11
    //   296: ldc 35
    //   298: invokespecial 341	java/lang/String:<init>	([BIILjava/lang/String;)V
    //   301: astore 19
    //   303: goto -212 -> 91
    //   306: astore 20
    //   308: new 164	java/lang/String
    //   311: dup
    //   312: aload 10
    //   314: iconst_0
    //   315: iload 11
    //   317: invokespecial 343	java/lang/String:<init>	([BII)V
    //   320: astore 19
    //   322: goto -231 -> 91
    //   325: iconst_0
    //   326: istore 5
    //   328: goto -133 -> 195
    //   331: iconst_0
    //   332: istore 7
    //   334: goto -123 -> 211
    //   337: iconst_0
    //   338: istore 9
    //   340: goto -110 -> 230
    //   343: aload_0
    //   344: iload 14
    //   346: iload_1
    //   347: iadd
    //   348: iconst_3
    //   349: aload 10
    //   351: iload 11
    //   353: iload_3
    //   354: invokestatic 142	org/jivesoftware/smack/util/Base64:encode3to4	([BII[BII)[B
    //   357: pop
    //   358: iload 13
    //   360: iconst_4
    //   361: iadd
    //   362: istore 16
    //   364: iload 5
    //   366: ifeq +215 -> 581
    //   369: iload 16
    //   371: bipush 76
    //   373: if_icmpne +208 -> 581
    //   376: aload 10
    //   378: iload 11
    //   380: iconst_4
    //   381: iadd
    //   382: bipush 10
    //   384: bastore
    //   385: iinc 11 1
    //   388: iconst_0
    //   389: istore 17
    //   391: iload 14
    //   393: iconst_3
    //   394: iadd
    //   395: istore 18
    //   397: iinc 11 4
    //   400: iload 17
    //   402: istore 13
    //   404: iload 18
    //   406: istore 14
    //   408: goto -155 -> 253
    //   411: astore 34
    //   413: goto -294 -> 119
    //   416: astore 35
    //   418: goto -294 -> 124
    //   421: astore 36
    //   423: goto -294 -> 129
    //   426: astore 31
    //   428: goto -273 -> 155
    //   431: astore 32
    //   433: goto -273 -> 160
    //   436: astore 33
    //   438: goto -273 -> 165
    //   441: astore 38
    //   443: goto -378 -> 65
    //   446: astore 39
    //   448: goto -378 -> 70
    //   451: astore 40
    //   453: goto -378 -> 75
    //   456: astore 45
    //   458: aload 45
    //   460: astore 30
    //   462: aconst_null
    //   463: astore 27
    //   465: aload 22
    //   467: astore 28
    //   469: aconst_null
    //   470: astore 29
    //   472: goto -322 -> 150
    //   475: astore 43
    //   477: aload 43
    //   479: astore 30
    //   481: aconst_null
    //   482: astore 27
    //   484: aload 22
    //   486: astore 28
    //   488: aload 23
    //   490: astore 29
    //   492: goto -342 -> 150
    //   495: astore 37
    //   497: aload 24
    //   499: astore 27
    //   501: aload 22
    //   503: astore 28
    //   505: aload 37
    //   507: astore 30
    //   509: aload 23
    //   511: astore 29
    //   513: goto -363 -> 150
    //   516: astore 30
    //   518: goto -368 -> 150
    //   521: astore 44
    //   523: aload 44
    //   525: astore 26
    //   527: aconst_null
    //   528: astore 27
    //   530: aload 22
    //   532: astore 28
    //   534: aconst_null
    //   535: astore 29
    //   537: goto -428 -> 109
    //   540: astore 42
    //   542: aload 42
    //   544: astore 26
    //   546: aconst_null
    //   547: astore 27
    //   549: aload 22
    //   551: astore 28
    //   553: aload 23
    //   555: astore 29
    //   557: goto -448 -> 109
    //   560: astore 25
    //   562: aload 25
    //   564: astore 26
    //   566: aload 24
    //   568: astore 27
    //   570: aload 22
    //   572: astore 28
    //   574: aload 23
    //   576: astore 29
    //   578: goto -469 -> 109
    //   581: iload 16
    //   583: istore 17
    //   585: goto -194 -> 391
    //
    // Exception table:
    //   from	to	target	type
    //   13	22	94	java/io/IOException
    //   13	22	135	finally
    //   75	91	168	java/io/UnsupportedEncodingException
    //   287	303	306	java/io/UnsupportedEncodingException
    //   114	119	411	java/lang/Exception
    //   119	124	416	java/lang/Exception
    //   124	129	421	java/lang/Exception
    //   150	155	426	java/lang/Exception
    //   155	160	431	java/lang/Exception
    //   160	165	436	java/lang/Exception
    //   60	65	441	java/lang/Exception
    //   65	70	446	java/lang/Exception
    //   70	75	451	java/lang/Exception
    //   22	36	456	finally
    //   36	47	475	finally
    //   47	60	495	finally
    //   109	114	516	finally
    //   22	36	521	java/io/IOException
    //   36	47	540	java/io/IOException
    //   47	60	560	java/io/IOException
  }

  // ERROR //
  public static void encodeFileToFile(String paramString1, String paramString2)
  {
    // Byte code:
    //   0: aload_0
    //   1: invokestatic 348	org/jivesoftware/smack/util/Base64:encodeFromFile	(Ljava/lang/String;)Ljava/lang/String;
    //   4: astore_2
    //   5: aconst_null
    //   6: astore_3
    //   7: new 252	java/io/BufferedOutputStream
    //   10: dup
    //   11: new 254	java/io/FileOutputStream
    //   14: dup
    //   15: aload_1
    //   16: invokespecial 255	java/io/FileOutputStream:<init>	(Ljava/lang/String;)V
    //   19: invokespecial 258	java/io/BufferedOutputStream:<init>	(Ljava/io/OutputStream;)V
    //   22: astore 4
    //   24: aload 4
    //   26: aload_2
    //   27: ldc_w 350
    //   30: invokevirtual 167	java/lang/String:getBytes	(Ljava/lang/String;)[B
    //   33: invokevirtual 262	java/io/OutputStream:write	([B)V
    //   36: aload 4
    //   38: invokevirtual 263	java/io/OutputStream:close	()V
    //   41: return
    //   42: astore 11
    //   44: aload 11
    //   46: astore 6
    //   48: aload 6
    //   50: invokevirtual 266	java/io/IOException:printStackTrace	()V
    //   53: aload_3
    //   54: invokevirtual 263	java/io/OutputStream:close	()V
    //   57: goto -16 -> 41
    //   60: astore 9
    //   62: goto -21 -> 41
    //   65: astore 7
    //   67: aload_3
    //   68: invokevirtual 263	java/io/OutputStream:close	()V
    //   71: aload 7
    //   73: athrow
    //   74: astore 10
    //   76: goto -35 -> 41
    //   79: astore 8
    //   81: goto -10 -> 71
    //   84: astore 7
    //   86: aload 4
    //   88: astore_3
    //   89: goto -22 -> 67
    //   92: astore 5
    //   94: aload 5
    //   96: astore 6
    //   98: aload 4
    //   100: astore_3
    //   101: goto -53 -> 48
    //
    // Exception table:
    //   from	to	target	type
    //   7	24	42	java/io/IOException
    //   53	57	60	java/lang/Exception
    //   7	24	65	finally
    //   48	53	65	finally
    //   36	41	74	java/lang/Exception
    //   67	71	79	java/lang/Exception
    //   24	36	84	finally
    //   24	36	92	java/io/IOException
  }

  // ERROR //
  public static String encodeFromFile(String paramString)
  {
    // Byte code:
    //   0: aconst_null
    //   1: astore_1
    //   2: aconst_null
    //   3: astore_2
    //   4: new 269	java/io/File
    //   7: dup
    //   8: aload_0
    //   9: invokespecial 270	java/io/File:<init>	(Ljava/lang/String;)V
    //   12: astore_3
    //   13: ldc2_w 351
    //   16: aload_3
    //   17: invokevirtual 274	java/io/File:length	()J
    //   20: l2d
    //   21: dmul
    //   22: d2i
    //   23: bipush 40
    //   25: invokestatic 358	java/lang/Math:max	(II)I
    //   28: newarray byte
    //   30: astore 8
    //   32: iconst_0
    //   33: istore 9
    //   35: new 6	org/jivesoftware/smack/util/Base64$InputStream
    //   38: dup
    //   39: new 286	java/io/BufferedInputStream
    //   42: dup
    //   43: new 288	java/io/FileInputStream
    //   46: dup
    //   47: aload_3
    //   48: invokespecial 291	java/io/FileInputStream:<init>	(Ljava/io/File;)V
    //   51: invokespecial 292	java/io/BufferedInputStream:<init>	(Ljava/io/InputStream;)V
    //   54: iconst_1
    //   55: invokespecial 295	org/jivesoftware/smack/util/Base64$InputStream:<init>	(Ljava/io/InputStream;I)V
    //   58: astore 10
    //   60: aload 10
    //   62: aload 8
    //   64: iload 9
    //   66: sipush 4096
    //   69: invokevirtual 298	org/jivesoftware/smack/util/Base64$InputStream:read	([BII)I
    //   72: istore 12
    //   74: iload 12
    //   76: ifge +29 -> 105
    //   79: new 164	java/lang/String
    //   82: dup
    //   83: aload 8
    //   85: iconst_0
    //   86: iload 9
    //   88: ldc 35
    //   90: invokespecial 341	java/lang/String:<init>	([BIILjava/lang/String;)V
    //   93: astore 13
    //   95: aload 10
    //   97: invokevirtual 284	org/jivesoftware/smack/util/Base64$InputStream:close	()V
    //   100: aload 13
    //   102: astore_1
    //   103: aload_1
    //   104: areturn
    //   105: iload 9
    //   107: iload 12
    //   109: iadd
    //   110: istore 9
    //   112: goto -52 -> 60
    //   115: astore 6
    //   117: getstatic 214	java/lang/System:err	Ljava/io/PrintStream;
    //   120: new 216	java/lang/StringBuilder
    //   123: dup
    //   124: ldc_w 360
    //   127: invokespecial 221	java/lang/StringBuilder:<init>	(Ljava/lang/String;)V
    //   130: aload_0
    //   131: invokevirtual 230	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   134: invokevirtual 236	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   137: invokevirtual 241	java/io/PrintStream:println	(Ljava/lang/String;)V
    //   140: aload_2
    //   141: invokevirtual 284	org/jivesoftware/smack/util/Base64$InputStream:close	()V
    //   144: goto -41 -> 103
    //   147: astore 7
    //   149: goto -46 -> 103
    //   152: astore 4
    //   154: aload_2
    //   155: invokevirtual 284	org/jivesoftware/smack/util/Base64$InputStream:close	()V
    //   158: aload 4
    //   160: athrow
    //   161: astore 14
    //   163: aload 13
    //   165: astore_1
    //   166: goto -63 -> 103
    //   169: astore 5
    //   171: goto -13 -> 158
    //   174: astore 4
    //   176: aload 10
    //   178: astore_2
    //   179: goto -25 -> 154
    //   182: astore 11
    //   184: aload 10
    //   186: astore_2
    //   187: goto -70 -> 117
    //
    // Exception table:
    //   from	to	target	type
    //   4	60	115	java/io/IOException
    //   140	144	147	java/lang/Exception
    //   4	60	152	finally
    //   117	140	152	finally
    //   95	100	161	java/lang/Exception
    //   154	158	169	java/lang/Exception
    //   60	95	174	finally
    //   60	95	182	java/io/IOException
  }

  public static String encodeObject(Serializable paramSerializable)
  {
    return encodeObject(paramSerializable, 0);
  }

  // ERROR //
  public static String encodeObject(Serializable paramSerializable, int paramInt)
  {
    // Byte code:
    //   0: iload_1
    //   1: iconst_2
    //   2: iand
    //   3: istore_2
    //   4: iload_1
    //   5: bipush 8
    //   7: iand
    //   8: pop
    //   9: new 174	java/io/ByteArrayOutputStream
    //   12: dup
    //   13: invokespecial 175	java/io/ByteArrayOutputStream:<init>	()V
    //   16: astore 4
    //   18: new 9	org/jivesoftware/smack/util/Base64$OutputStream
    //   21: dup
    //   22: aload 4
    //   24: iload_1
    //   25: iconst_1
    //   26: ior
    //   27: invokespecial 305	org/jivesoftware/smack/util/Base64$OutputStream:<init>	(Ljava/io/OutputStream;I)V
    //   30: astore 5
    //   32: iload_2
    //   33: iconst_2
    //   34: if_icmpne +80 -> 114
    //   37: new 331	java/util/zip/GZIPOutputStream
    //   40: dup
    //   41: aload 5
    //   43: invokespecial 332	java/util/zip/GZIPOutputStream:<init>	(Ljava/io/OutputStream;)V
    //   46: astore 8
    //   48: new 367	java/io/ObjectOutputStream
    //   51: dup
    //   52: aload 8
    //   54: invokespecial 368	java/io/ObjectOutputStream:<init>	(Ljava/io/OutputStream;)V
    //   57: astore 7
    //   59: aload 7
    //   61: aload_0
    //   62: invokevirtual 372	java/io/ObjectOutputStream:writeObject	(Ljava/lang/Object;)V
    //   65: aload 7
    //   67: invokevirtual 373	java/io/ObjectOutputStream:close	()V
    //   70: aload 8
    //   72: invokevirtual 334	java/util/zip/GZIPOutputStream:close	()V
    //   75: aload 5
    //   77: invokevirtual 263	java/io/OutputStream:close	()V
    //   80: aload 4
    //   82: invokevirtual 196	java/io/ByteArrayOutputStream:close	()V
    //   85: new 164	java/lang/String
    //   88: dup
    //   89: aload 4
    //   91: invokevirtual 193	java/io/ByteArrayOutputStream:toByteArray	()[B
    //   94: ldc 35
    //   96: invokespecial 337	java/lang/String:<init>	([BLjava/lang/String;)V
    //   99: astore 35
    //   101: aload 8
    //   103: pop
    //   104: aload 35
    //   106: astore 29
    //   108: aload 7
    //   110: pop
    //   111: aload 29
    //   113: areturn
    //   114: new 367	java/io/ObjectOutputStream
    //   117: dup
    //   118: aload 5
    //   120: invokespecial 368	java/io/ObjectOutputStream:<init>	(Ljava/io/OutputStream;)V
    //   123: astore 6
    //   125: aload 6
    //   127: astore 7
    //   129: aconst_null
    //   130: astore 8
    //   132: goto -73 -> 59
    //   135: astore 49
    //   137: aconst_null
    //   138: astore 13
    //   140: aconst_null
    //   141: astore 12
    //   143: aconst_null
    //   144: astore 11
    //   146: aload 49
    //   148: astore 14
    //   150: aconst_null
    //   151: astore 10
    //   153: aload 14
    //   155: invokevirtual 266	java/io/IOException:printStackTrace	()V
    //   158: aload 13
    //   160: invokevirtual 373	java/io/ObjectOutputStream:close	()V
    //   163: aload 11
    //   165: invokevirtual 334	java/util/zip/GZIPOutputStream:close	()V
    //   168: aload 10
    //   170: invokevirtual 263	java/io/OutputStream:close	()V
    //   173: aload 12
    //   175: invokevirtual 196	java/io/ByteArrayOutputStream:close	()V
    //   178: aload 11
    //   180: pop
    //   181: aload 13
    //   183: pop
    //   184: aconst_null
    //   185: astore 29
    //   187: goto -76 -> 111
    //   190: astore 48
    //   192: aload 48
    //   194: astore 18
    //   196: aconst_null
    //   197: astore 12
    //   199: aconst_null
    //   200: astore 17
    //   202: aconst_null
    //   203: astore 10
    //   205: aconst_null
    //   206: astore 16
    //   208: aload 17
    //   210: invokevirtual 373	java/io/ObjectOutputStream:close	()V
    //   213: aload 16
    //   215: invokevirtual 334	java/util/zip/GZIPOutputStream:close	()V
    //   218: aload 10
    //   220: invokevirtual 263	java/io/OutputStream:close	()V
    //   223: aload 12
    //   225: invokevirtual 196	java/io/ByteArrayOutputStream:close	()V
    //   228: aload 18
    //   230: athrow
    //   231: astore 38
    //   233: new 164	java/lang/String
    //   236: dup
    //   237: aload 4
    //   239: invokevirtual 193	java/io/ByteArrayOutputStream:toByteArray	()[B
    //   242: invokespecial 338	java/lang/String:<init>	([B)V
    //   245: astore 39
    //   247: aload 8
    //   249: pop
    //   250: aload 39
    //   252: astore 29
    //   254: aload 7
    //   256: pop
    //   257: goto -146 -> 111
    //   260: astore 23
    //   262: goto -99 -> 163
    //   265: astore 24
    //   267: goto -99 -> 168
    //   270: astore 25
    //   272: goto -99 -> 173
    //   275: astore 26
    //   277: goto -99 -> 178
    //   280: astore 19
    //   282: goto -69 -> 213
    //   285: astore 20
    //   287: goto -69 -> 218
    //   290: astore 21
    //   292: goto -69 -> 223
    //   295: astore 22
    //   297: goto -69 -> 228
    //   300: astore 31
    //   302: goto -232 -> 70
    //   305: astore 32
    //   307: goto -232 -> 75
    //   310: astore 33
    //   312: goto -232 -> 80
    //   315: astore 34
    //   317: goto -232 -> 85
    //   320: astore 47
    //   322: aconst_null
    //   323: astore 17
    //   325: aload 4
    //   327: astore 12
    //   329: aload 47
    //   331: astore 18
    //   333: aconst_null
    //   334: astore 10
    //   336: aconst_null
    //   337: astore 16
    //   339: goto -131 -> 208
    //   342: astore 43
    //   344: aconst_null
    //   345: astore 16
    //   347: aload 4
    //   349: astore 12
    //   351: aload 43
    //   353: astore 18
    //   355: aload 5
    //   357: astore 10
    //   359: aconst_null
    //   360: astore 17
    //   362: goto -154 -> 208
    //   365: astore 45
    //   367: aload 8
    //   369: astore 16
    //   371: aload 4
    //   373: astore 12
    //   375: aload 45
    //   377: astore 18
    //   379: aload 5
    //   381: astore 10
    //   383: aconst_null
    //   384: astore 17
    //   386: goto -178 -> 208
    //   389: astore 30
    //   391: aload 5
    //   393: astore 10
    //   395: aload 7
    //   397: astore 17
    //   399: aload 8
    //   401: astore 16
    //   403: aload 4
    //   405: astore 12
    //   407: aload 30
    //   409: astore 18
    //   411: goto -203 -> 208
    //   414: astore 15
    //   416: aload 11
    //   418: astore 16
    //   420: aload 13
    //   422: astore 17
    //   424: aload 15
    //   426: astore 18
    //   428: goto -220 -> 208
    //   431: astore 46
    //   433: aconst_null
    //   434: astore 11
    //   436: aload 4
    //   438: astore 12
    //   440: aconst_null
    //   441: astore 13
    //   443: aload 46
    //   445: astore 14
    //   447: aconst_null
    //   448: astore 10
    //   450: goto -297 -> 153
    //   453: astore 42
    //   455: aload 42
    //   457: astore 14
    //   459: aload 4
    //   461: astore 12
    //   463: aconst_null
    //   464: astore 13
    //   466: aload 5
    //   468: astore 10
    //   470: aconst_null
    //   471: astore 11
    //   473: goto -320 -> 153
    //   476: astore 44
    //   478: aload 44
    //   480: astore 14
    //   482: aload 5
    //   484: astore 10
    //   486: aload 8
    //   488: astore 11
    //   490: aload 4
    //   492: astore 12
    //   494: aconst_null
    //   495: astore 13
    //   497: goto -344 -> 153
    //   500: astore 9
    //   502: aload 5
    //   504: astore 10
    //   506: aload 8
    //   508: astore 11
    //   510: aload 4
    //   512: astore 12
    //   514: aload 7
    //   516: astore 13
    //   518: aload 9
    //   520: astore 14
    //   522: goto -369 -> 153
    //
    // Exception table:
    //   from	to	target	type
    //   9	18	135	java/io/IOException
    //   9	18	190	finally
    //   85	101	231	java/io/UnsupportedEncodingException
    //   158	163	260	java/lang/Exception
    //   163	168	265	java/lang/Exception
    //   168	173	270	java/lang/Exception
    //   173	178	275	java/lang/Exception
    //   208	213	280	java/lang/Exception
    //   213	218	285	java/lang/Exception
    //   218	223	290	java/lang/Exception
    //   223	228	295	java/lang/Exception
    //   65	70	300	java/lang/Exception
    //   70	75	305	java/lang/Exception
    //   75	80	310	java/lang/Exception
    //   80	85	315	java/lang/Exception
    //   18	32	320	finally
    //   37	48	342	finally
    //   114	125	342	finally
    //   48	59	365	finally
    //   59	65	389	finally
    //   153	158	414	finally
    //   18	32	431	java/io/IOException
    //   37	48	453	java/io/IOException
    //   114	125	453	java/io/IOException
    //   48	59	476	java/io/IOException
    //   59	65	500	java/io/IOException
  }

  // ERROR //
  public static boolean encodeToFile(byte[] paramArrayOfByte, String paramString)
  {
    // Byte code:
    //   0: aconst_null
    //   1: astore_2
    //   2: new 9	org/jivesoftware/smack/util/Base64$OutputStream
    //   5: dup
    //   6: new 254	java/io/FileOutputStream
    //   9: dup
    //   10: aload_1
    //   11: invokespecial 255	java/io/FileOutputStream:<init>	(Ljava/lang/String;)V
    //   14: iconst_1
    //   15: invokespecial 305	org/jivesoftware/smack/util/Base64$OutputStream:<init>	(Ljava/io/OutputStream;I)V
    //   18: astore_3
    //   19: aload_3
    //   20: aload_0
    //   21: invokevirtual 306	org/jivesoftware/smack/util/Base64$OutputStream:write	([B)V
    //   24: iconst_1
    //   25: istore 5
    //   27: aload_3
    //   28: invokevirtual 307	org/jivesoftware/smack/util/Base64$OutputStream:close	()V
    //   31: iload 5
    //   33: ireturn
    //   34: astore 10
    //   36: iconst_0
    //   37: istore 5
    //   39: aload_2
    //   40: invokevirtual 307	org/jivesoftware/smack/util/Base64$OutputStream:close	()V
    //   43: goto -12 -> 31
    //   46: astore 6
    //   48: goto -17 -> 31
    //   51: astore 7
    //   53: aload_2
    //   54: invokevirtual 307	org/jivesoftware/smack/util/Base64$OutputStream:close	()V
    //   57: aload 7
    //   59: athrow
    //   60: astore 9
    //   62: goto -31 -> 31
    //   65: astore 8
    //   67: goto -10 -> 57
    //   70: astore 7
    //   72: aload_3
    //   73: astore_2
    //   74: goto -21 -> 53
    //   77: astore 4
    //   79: aload_3
    //   80: astore_2
    //   81: goto -45 -> 36
    //
    // Exception table:
    //   from	to	target	type
    //   2	19	34	java/io/IOException
    //   39	43	46	java/lang/Exception
    //   2	19	51	finally
    //   27	31	60	java/lang/Exception
    //   53	57	65	java/lang/Exception
    //   19	24	70	finally
    //   19	24	77	java/io/IOException
  }

  private static final byte[] getAlphabet(int paramInt)
  {
    byte[] arrayOfByte;
    if ((paramInt & 0x10) == 16)
      arrayOfByte = _URL_SAFE_ALPHABET;
    while (true)
    {
      while (true)
      {
        return arrayOfByte;
        if ((paramInt & 0x20) != 32)
          break;
        arrayOfByte = _ORDERED_ALPHABET;
      }
      arrayOfByte = _STANDARD_ALPHABET;
    }
  }

  private static final byte[] getDecodabet(int paramInt)
  {
    byte[] arrayOfByte;
    if ((paramInt & 0x10) == 16)
      arrayOfByte = _URL_SAFE_DECODABET;
    while (true)
    {
      while (true)
      {
        return arrayOfByte;
        if ((paramInt & 0x20) != 32)
          break;
        arrayOfByte = _ORDERED_DECODABET;
      }
      arrayOfByte = _STANDARD_DECODABET;
    }
  }

  public static final void main(String[] paramArrayOfString)
  {
    if (paramArrayOfString.length < 3)
      usage("Not enough arguments.");
    while (true)
    {
      String str1;
      while (true)
      {
        String str2;
        String str3;
        while (true)
        {
          return;
          str1 = paramArrayOfString[0];
          str2 = paramArrayOfString[1];
          str3 = paramArrayOfString[2];
          if (!(str1.equals("-e")))
            break;
          encodeFileToFile(str2, str3);
        }
        if (!(str1.equals("-d")))
          break;
        decodeFileToFile(str2, str3);
      }
      usage("Unknown flag: " + str1);
    }
  }

  private static final void usage(String paramString)
  {
    System.err.println(paramString);
    System.err.println("Usage: java Base64 -e|-d inputfile outputfile");
  }

  public static class InputStream extends FilterInputStream
  {
    private byte[] alphabet;
    private boolean breakLines;
    private byte[] buffer;
    private int bufferLength;
    private byte[] decodabet;
    private boolean encode;
    private int lineLength;
    private int numSigBytes;
    private int options;
    private int position;

    public InputStream(InputStream paramInputStream)
    {
      this(paramInputStream, 0);
    }

    public InputStream(InputStream paramInputStream, int paramInt)
    {
      super(paramInputStream);
      if ((paramInt & 0x8) != 8)
      {
        i = 1;
        this.breakLines = i;
        if ((paramInt & 0x1) != 1)
          break label101;
        j = 1;
        this.encode = j;
        if (!(this.encode))
          break label107;
        k = 4;
      }
      while (true)
      {
        while (true)
        {
          while (true)
          {
            this.bufferLength = k;
            this.buffer = new byte[this.bufferLength];
            this.position = -1;
            this.lineLength = 0;
            this.options = paramInt;
            this.alphabet = Base64.access$0(paramInt);
            this.decodabet = Base64.access$1(paramInt);
            return;
            i = 0;
          }
          label101: j = 0;
        }
        label107: k = 3;
      }
    }

    public int read()
      throws IOException
    {
      byte[] arrayOfByte3;
      int i2;
      int i3;
      if (this.position < 0)
      {
        if (!(this.encode))
          break label137;
        arrayOfByte3 = new byte[3];
        i2 = 0;
        i3 = 0;
        if (i3 < 3)
          break label89;
        if (i2 <= 0)
          break label130;
        Base64.access$2(arrayOfByte3, 0, i2, this.buffer, 0, this.options);
        this.position = 0;
        this.numSigBytes = 4;
      }
      if (this.position >= 0)
      {
        int k;
        if (this.position >= this.numSigBytes)
          k = -1;
        while (true)
        {
          while (true)
          {
            while (true)
            {
              while (true)
              {
                return k;
                try
                {
                  label89: int i4 = this.in.read();
                  if (i4 >= 0)
                  {
                    arrayOfByte3[i3] = (byte)i4;
                    ++i2;
                  }
                  ++i3;
                }
                catch (IOException localIOException)
                {
                  if (i3 != 0);
                  throw localIOException;
                }
                label130: k = -1;
              }
              label137: byte[] arrayOfByte2 = new byte[4];
              int l = 0;
              while (true)
              {
                int i1;
                if (l >= 4);
                do
                {
                  while (true)
                  {
                    if (l != 4)
                      break label232;
                    this.numSigBytes = Base64.access$3(arrayOfByte2, 0, this.buffer, 0, this.options);
                    this.position = 0;
                  }
                  do
                    i1 = this.in.read();
                  while ((i1 >= 0) && (this.decodabet[(i1 & 0x7F)] <= -5));
                }
                while (i1 < 0);
                arrayOfByte2[l] = (byte)i1;
                ++l;
              }
              label232: if (l != 0)
                break;
              k = -1;
            }
            throw new IOException("Improperly padded Base64 input.");
            if ((!(this.encode)) || (!(this.breakLines)) || (this.lineLength < 76))
              break;
            this.lineLength = 0;
            k = 10;
          }
          this.lineLength = (1 + this.lineLength);
          byte[] arrayOfByte1 = this.buffer;
          int i = this.position;
          this.position = (i + 1);
          int j = arrayOfByte1[i];
          if (this.position >= this.bufferLength)
            this.position = -1;
          k = j & 0xFF;
        }
      }
      throw new IOException("Error in Base64 code reading stream.");
    }

    public int read(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
      throws IOException
    {
      int k;
      int i = 0;
      if (i >= paramInt2)
        k = i;
      while (true)
      {
        do
          while (true)
          {
            return k;
            int j = read();
            if (j < 0)
              break;
            paramArrayOfByte[(paramInt1 + i)] = (byte)j;
            ++i;
          }
        while (i != 0);
        k = -1;
      }
    }
  }

  public static class OutputStream extends FilterOutputStream
  {
    private byte[] alphabet;
    private byte[] b4;
    private boolean breakLines;
    private byte[] buffer;
    private int bufferLength;
    private byte[] decodabet;
    private boolean encode;
    private int lineLength;
    private int options;
    private int position;
    private boolean suspendEncoding;

    public OutputStream(OutputStream paramOutputStream)
    {
      this(paramOutputStream, 1);
    }

    public OutputStream(OutputStream paramOutputStream, int paramInt)
    {
      super(paramOutputStream);
      if ((paramInt & 0x8) != 8)
      {
        i = 1;
        this.breakLines = i;
        if ((paramInt & 0x1) != 1)
          break label112;
        j = 1;
        this.encode = j;
        if (!(this.encode))
          break label118;
        k = 3;
      }
      while (true)
      {
        while (true)
        {
          while (true)
          {
            this.bufferLength = k;
            this.buffer = new byte[this.bufferLength];
            this.position = 0;
            this.lineLength = 0;
            this.suspendEncoding = false;
            this.b4 = new byte[4];
            this.options = paramInt;
            this.alphabet = Base64.access$0(paramInt);
            this.decodabet = Base64.access$1(paramInt);
            return;
            i = 0;
          }
          label112: j = 0;
        }
        label118: k = 4;
      }
    }

    public void close()
      throws IOException
    {
      flushBase64();
      super.close();
      this.buffer = null;
      this.out = null;
    }

    public void flushBase64()
      throws IOException
    {
      if (this.position > 0)
      {
        if (!(this.encode))
          break label46;
        this.out.write(Base64.access$4(this.b4, this.buffer, this.position, this.options));
        this.position = 0;
      }
      return;
      label46: throw new IOException("Base64 input not properly padded.");
    }

    public void resumeEncoding()
    {
      this.suspendEncoding = false;
    }

    public void suspendEncoding()
      throws IOException
    {
      flushBase64();
      this.suspendEncoding = true;
    }

    public void write(int paramInt)
      throws IOException
    {
      if (this.suspendEncoding)
        this.out.write(paramInt);
      label135: label223: 
      do
        while (true)
        {
          do
          {
            while (true)
            {
              do
              {
                return;
                if (!(this.encode))
                  break label135;
                byte[] arrayOfByte2 = this.buffer;
                int k = this.position;
                this.position = (k + 1);
                arrayOfByte2[k] = (byte)paramInt;
              }
              while (this.position < this.bufferLength);
              this.out.write(Base64.access$4(this.b4, this.buffer, this.bufferLength, this.options));
              this.lineLength = (4 + this.lineLength);
              if ((this.breakLines) && (this.lineLength >= 76))
              {
                this.out.write(10);
                this.lineLength = 0;
              }
              this.position = 0;
            }
            if (this.decodabet[(paramInt & 0x7F)] <= -5)
              break label223;
            byte[] arrayOfByte1 = this.buffer;
            int i = this.position;
            this.position = (i + 1);
            arrayOfByte1[i] = (byte)paramInt;
          }
          while (this.position < this.bufferLength);
          int j = Base64.access$3(this.buffer, 0, this.b4, 0, this.options);
          this.out.write(this.b4, 0, j);
          this.position = 0;
        }
      while (this.decodabet[(paramInt & 0x7F)] == -5);
      throw new IOException("Invalid character in Base64 data.");
    }

    public void write(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
      throws IOException
    {
      if (this.suspendEncoding)
      {
        this.out.write(paramArrayOfByte, paramInt1, paramInt2);
        return;
      }
      int i = 0;
      while (true)
      {
        if (i >= paramInt2);
        write(paramArrayOfByte[(paramInt1 + i)]);
        ++i;
      }
    }
  }
}